package com.sfpay.coreplatform.account.service.inner;

import java.util.List;

import com.sfpay.coreplatform.account.service.exception.AccountServiceException;
import com.sfpay.coreplatform.account.valueobject.dto.AccountPosting;
import com.sfpay.coreplatform.account.valueobject.dto.Transfer;
import com.sfpay.coreplatform.account.valueobject.tmo.TallySerial;

/**
 * 
 * 
 * 类说明：记账规则接口
 *  
 * 
 * <p>
 * 详细描述：记账规则接口
 *   
 * 
 * @author 308276
 *   
 * CreateDate: 2012-2-14
 */
public interface IAccountPostingRuleService {
	
	/**
	 * 
	 *
	 * 方法说明：根据记账规则生成记账流水
	 *
	 * @param accountPosting 记账传入对象
	 * @param payerBalanceAmount 付款方账户余额
	 * @param payeeBalanceAmount 收款方账户余额
	 * @param isPayerAsync 付款方异步记账
	 * @param isPayeeAsync 收款方异步记账
	 * @return List<TallySerial> 记账流水
	 */
	public List<TallySerial> generateTallySerials(Transfer accountPosting,Long prePayerBalanceAmount,Long prePayeeBalanceAmount,Long payerBalanceAmount,Long payeeBalanceAmount,boolean isPayerAsync,boolean isPayeeAsync) throws AccountServiceException;

}
